<svg xmlns="http://www.w3.org/2000/svg">

<filter id="f1" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" flood-opacity="0.5" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="over" in2="SourceGraphic"/>
</filter>
<g filter="url(#f1)">
  <rect x="0" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="50" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<filter id="f2" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="in" in2="SourceGraphic"/>
</filter>
<g filter="url(#f2)">
  <rect x="100" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="150" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<filter id="f3" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="out" in2="SourceGraphic"/>
</filter>
<g filter="url(#f3)">
  <rect x="200" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="250" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<filter id="f4" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" flood-opacity="0.5" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="atop" in2="SourceGraphic"/>
</filter>
<g filter="url(#f4)">
  <rect x="300" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="350" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<filter id="f5" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="xor" in2="SourceGraphic"/>
</filter>
<g filter="url(#f5)">
  <rect x="400" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="450" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<filter id="f6" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" 
         x="0" y="0" width="1" height="1">
  <feFlood flood-color="#ff0000" result="flood"/>
  <feComposite x="10%" y="10%" width="80%" height="80%" style="color-interpolation-filters:sRGB"
   in="flood" operator="arithmetic" in2="SourceGraphic"
   k2="1" k3="1"/>
</filter>
<g filter="url(#f6)">
  <rect x="500" y="0" width="50" height="100" fill="#00ff00"/>
  <rect x="550" y="0" width="50" height="100" fill="#00ff00" opacity="0"/>
</g>

<!-- Test the tricky case where the arithmetic operator leads to drawing outside
     the bounding box of the source images -->
<filter id="f7" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse" 
         x="0" y="100" width="100" height="100">
  <feComposite x="10" y="110" width="80" height="80" style="color-interpolation-filters:sRGB"
   in="SourceGraphic" operator="arithmetic" in2="SourceGraphic"
   k4="1"/>
</filter>
<rect x="0" y="100" width="100" height="100" fill="#000000"/>
<g filter="url(#f7)">
</g>

</svg>
